package com.ourteam.product.requirement.service;

/**
 *
 * Template Name : 业务服务实现基类
 * Template Version : 1
 * Template Last Modfiy Date : Mon Nov 06 10:52:01 CST 2017
 * Auto Generate Date : 2018-05-03 16:45:47
  * Warning ! This file will be overwrite when regenerate !
  *
 */
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


abstract class AbstractProductIssueService extends net.service.DefaultServiceImpl
    implements IProductIssueService {
    protected static final Log logger = LogFactory.getLog(AbstractProductIssueService.class);

    /**
     * ProductIssue DAO Instance
    */
    protected com.ourteam.product.requirement.dao.IProductIssueDAO productIssueDao;

    /**
     * ProductIssueAttach DAO Instance
    */
    protected com.ourteam.product.requirement.dao.IProductIssueAttachDAO productIssueAttachDao;

    /**
     * ProductIssueNote DAO Instance
    */
    protected com.ourteam.product.requirement.dao.IProductIssueNoteDAO productIssueNoteDao;

    /**
     *  SystemSerialCodeService Instance
    */
    protected com.ourteam.system.service.ISystemSerialCodeService systemSerialCodeService;

    /**
     * ProductIssueChangeLog DAO Instance
    */
    protected com.ourteam.product.requirement.dao.IProductIssueChangeLogDAO productIssueChangeLogDao;

    /**
         *  Get ProductIssue DAO Instance
         */
    public com.ourteam.product.requirement.dao.IProductIssueDAO getProductIssueDao() {
        return productIssueDao;
    }

    /**
         *  Set ProductIssue DAO Instance
         */
    public void setProductIssueDao(
        com.ourteam.product.requirement.dao.IProductIssueDAO aDao) {
        productIssueDao = aDao;
    }

    /**
         *  Get ProductIssueAttach DAO Instance
         */
    public com.ourteam.product.requirement.dao.IProductIssueAttachDAO getProductIssueAttachDao() {
        return productIssueAttachDao;
    }

    /**
         *  Set ProductIssueAttach DAO Instance
         */
    public void setProductIssueAttachDao(
        com.ourteam.product.requirement.dao.IProductIssueAttachDAO aDao) {
        productIssueAttachDao = aDao;
    }

    /**
         *  Get ProductIssueNote DAO Instance
         */
    public com.ourteam.product.requirement.dao.IProductIssueNoteDAO getProductIssueNoteDao() {
        return productIssueNoteDao;
    }

    /**
         *  Set ProductIssueNote DAO Instance
         */
    public void setProductIssueNoteDao(
        com.ourteam.product.requirement.dao.IProductIssueNoteDAO aDao) {
        productIssueNoteDao = aDao;
    }

    /**
         *  Get SystemSerialCodeService Instance
        */
    public com.ourteam.system.service.ISystemSerialCodeService getSystemSerialCodeService() {
        return systemSerialCodeService;
    }

    /**
     *  Set SystemSerialCodeService Instance
    */
    public void setSystemSerialCodeService(
        com.ourteam.system.service.ISystemSerialCodeService aService) {
        systemSerialCodeService = aService;
    }

    /**
         *  Get ProductIssueChangeLog DAO Instance
         */
    public com.ourteam.product.requirement.dao.IProductIssueChangeLogDAO getProductIssueChangeLogDao() {
        return productIssueChangeLogDao;
    }

    /**
         *  Set ProductIssueChangeLog DAO Instance
         */
    public void setProductIssueChangeLogDao(
        com.ourteam.product.requirement.dao.IProductIssueChangeLogDAO aDao) {
        productIssueChangeLogDao = aDao;
    }

    /**
     * $method.remarks
    
     * @param aProductIssue
    
     * @throws Exception
     */
    protected abstract void doAddNewProductIssue(
        final com.ourteam.product.requirement.domain.ProductIssueBean aProductIssue)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void addNewProductIssue(
        final com.ourteam.product.requirement.domain.ProductIssueBean aProductIssue)
        throws Exception {
        try {
            if (aProductIssue == null) {
                throw new org.apache.commons.lang.NullArgumentException(
                    "The Parameter [aProductIssue] Value is NULL");
            }

            doAddNewProductIssue(aProductIssue);
        } catch (Exception e) {
            logger.error("do addNewProductIssue error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssue
    
     * @throws Exception
     */
    protected abstract void doModifyProductIssue(
        final com.ourteam.product.requirement.domain.ProductIssueBean aProductIssue)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void modifyProductIssue(
        final com.ourteam.product.requirement.domain.ProductIssueBean aProductIssue)
        throws Exception {
        try {
            if (aProductIssue == null) {
                throw new org.apache.commons.lang.NullArgumentException(
                    "The Parameter [aProductIssue] Value is NULL");
            }

            doModifyProductIssue(aProductIssue);
        } catch (Exception e) {
            logger.error("do modifyProductIssue error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueIds
    
     * @throws Exception
     */
    protected abstract void doDeleteProductIssues(final long[] aProductIssueIds)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void deleteProductIssues(final long[] aProductIssueIds)
        throws Exception {
        try {
            doDeleteProductIssues(aProductIssueIds);
        } catch (Exception e) {
            logger.error("do deleteProductIssues error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueId
    
     * @throws Exception
     */
    protected abstract com.ourteam.product.requirement.domain.ProductIssueBean doGetProductIssueById(
        final long aProductIssueId) throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public com.ourteam.product.requirement.domain.ProductIssueBean getProductIssueById(
        final long aProductIssueId) throws Exception {
        try {
            com.ourteam.product.requirement.domain.ProductIssueBean result = doGetProductIssueById(aProductIssueId);

            return result;
        } catch (Exception e) {
            logger.error("do getProductIssueById error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param queryBean
    
     * @throws Exception
     */
    protected abstract com.ourteam.product.requirement.domain.ProductIssueBean[] doQueryProductIssues(
        final com.ourteam.product.requirement.dao.ProductIssueDAOQueryBean queryBean)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public com.ourteam.product.requirement.domain.ProductIssueBean[] queryProductIssues(
        final com.ourteam.product.requirement.dao.ProductIssueDAOQueryBean queryBean)
        throws Exception {
        try {
            com.ourteam.product.requirement.domain.ProductIssueBean[] result = doQueryProductIssues(queryBean);

            return result;
        } catch (Exception e) {
            logger.error("do queryProductIssues error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param queryBean
    
     * @throws Exception
     */
    protected abstract int doQueryProductIssueCount(
        final com.ourteam.product.requirement.dao.ProductIssueDAOQueryBean queryBean)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public int queryProductIssueCount(
        final com.ourteam.product.requirement.dao.ProductIssueDAOQueryBean queryBean)
        throws Exception {
        try {
            int result = doQueryProductIssueCount(queryBean);

            return result;
        } catch (Exception e) {
            logger.error("do queryProductIssueCount error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueAttach
    
     * @throws Exception
     */
    protected abstract void doAddNewProductIssueAttach(
        final com.ourteam.product.requirement.domain.ProductIssueAttachBean aProductIssueAttach)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void addNewProductIssueAttach(
        final com.ourteam.product.requirement.domain.ProductIssueAttachBean aProductIssueAttach)
        throws Exception {
        try {
            if (aProductIssueAttach == null) {
                throw new org.apache.commons.lang.NullArgumentException(
                    "The Parameter [aProductIssueAttach] Value is NULL");
            }

            doAddNewProductIssueAttach(aProductIssueAttach);
        } catch (Exception e) {
            logger.error("do addNewProductIssueAttach error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueAttach
    
     * @throws Exception
     */
    protected abstract void doModifyProductIssueAttach(
        final com.ourteam.product.requirement.domain.ProductIssueAttachBean aProductIssueAttach)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void modifyProductIssueAttach(
        final com.ourteam.product.requirement.domain.ProductIssueAttachBean aProductIssueAttach)
        throws Exception {
        try {
            if (aProductIssueAttach == null) {
                throw new org.apache.commons.lang.NullArgumentException(
                    "The Parameter [aProductIssueAttach] Value is NULL");
            }

            doModifyProductIssueAttach(aProductIssueAttach);
        } catch (Exception e) {
            logger.error("do modifyProductIssueAttach error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueAttachIds
    
     * @throws Exception
     */
    protected abstract void doDeleteProductIssueAttachs(
        final long[] aProductIssueAttachIds) throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void deleteProductIssueAttachs(final long[] aProductIssueAttachIds)
        throws Exception {
        try {
            doDeleteProductIssueAttachs(aProductIssueAttachIds);
        } catch (Exception e) {
            logger.error("do deleteProductIssueAttachs error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueAttachId
    
     * @throws Exception
     */
    protected abstract com.ourteam.product.requirement.domain.ProductIssueAttachBean doGetProductIssueAttachById(
        final long aProductIssueAttachId) throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public com.ourteam.product.requirement.domain.ProductIssueAttachBean getProductIssueAttachById(
        final long aProductIssueAttachId) throws Exception {
        try {
            com.ourteam.product.requirement.domain.ProductIssueAttachBean result =
                doGetProductIssueAttachById(aProductIssueAttachId);

            return result;
        } catch (Exception e) {
            logger.error("do getProductIssueAttachById error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param queryBean
    
     * @throws Exception
     */
    protected abstract com.ourteam.product.requirement.domain.ProductIssueAttachBean[] doQueryProductIssueAttachs(
        final com.ourteam.product.requirement.dao.ProductIssueAttachDAOQueryBean queryBean)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public com.ourteam.product.requirement.domain.ProductIssueAttachBean[] queryProductIssueAttachs(
        final com.ourteam.product.requirement.dao.ProductIssueAttachDAOQueryBean queryBean)
        throws Exception {
        try {
            com.ourteam.product.requirement.domain.ProductIssueAttachBean[] result =
                doQueryProductIssueAttachs(queryBean);

            return result;
        } catch (Exception e) {
            logger.error("do queryProductIssueAttachs error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param queryBean
    
     * @throws Exception
     */
    protected abstract int doQueryProductIssueAttachCount(
        final com.ourteam.product.requirement.dao.ProductIssueAttachDAOQueryBean queryBean)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public int queryProductIssueAttachCount(
        final com.ourteam.product.requirement.dao.ProductIssueAttachDAOQueryBean queryBean)
        throws Exception {
        try {
            int result = doQueryProductIssueAttachCount(queryBean);

            return result;
        } catch (Exception e) {
            logger.error("do queryProductIssueAttachCount error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueNote
    
     * @throws Exception
     */
    protected abstract void doAddNewProductIssueNote(
        final com.ourteam.product.requirement.domain.ProductIssueNoteBean aProductIssueNote)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void addNewProductIssueNote(
        final com.ourteam.product.requirement.domain.ProductIssueNoteBean aProductIssueNote)
        throws Exception {
        try {
            if (aProductIssueNote == null) {
                throw new org.apache.commons.lang.NullArgumentException(
                    "The Parameter [aProductIssueNote] Value is NULL");
            }

            doAddNewProductIssueNote(aProductIssueNote);
        } catch (Exception e) {
            logger.error("do addNewProductIssueNote error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueNote
    
     * @throws Exception
     */
    protected abstract void doModifyProductIssueNote(
        final com.ourteam.product.requirement.domain.ProductIssueNoteBean aProductIssueNote)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void modifyProductIssueNote(
        final com.ourteam.product.requirement.domain.ProductIssueNoteBean aProductIssueNote)
        throws Exception {
        try {
            if (aProductIssueNote == null) {
                throw new org.apache.commons.lang.NullArgumentException(
                    "The Parameter [aProductIssueNote] Value is NULL");
            }

            doModifyProductIssueNote(aProductIssueNote);
        } catch (Exception e) {
            logger.error("do modifyProductIssueNote error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueNoteIds
    
     * @throws Exception
     */
    protected abstract void doDeleteProductIssueNotes(
        final long[] aProductIssueNoteIds) throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void deleteProductIssueNotes(final long[] aProductIssueNoteIds)
        throws Exception {
        try {
            doDeleteProductIssueNotes(aProductIssueNoteIds);
        } catch (Exception e) {
            logger.error("do deleteProductIssueNotes error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueNoteId
    
     * @throws Exception
     */
    protected abstract com.ourteam.product.requirement.domain.ProductIssueNoteBean doGetProductIssueNoteById(
        final long aProductIssueNoteId) throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public com.ourteam.product.requirement.domain.ProductIssueNoteBean getProductIssueNoteById(
        final long aProductIssueNoteId) throws Exception {
        try {
            com.ourteam.product.requirement.domain.ProductIssueNoteBean result = doGetProductIssueNoteById(aProductIssueNoteId);

            return result;
        } catch (Exception e) {
            logger.error("do getProductIssueNoteById error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param queryBean
    
     * @throws Exception
     */
    protected abstract com.ourteam.product.requirement.domain.ProductIssueNoteBean[] doQueryProductIssueNotes(
        final com.ourteam.product.requirement.dao.ProductIssueNoteDAOQueryBean queryBean)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public com.ourteam.product.requirement.domain.ProductIssueNoteBean[] queryProductIssueNotes(
        final com.ourteam.product.requirement.dao.ProductIssueNoteDAOQueryBean queryBean)
        throws Exception {
        try {
            com.ourteam.product.requirement.domain.ProductIssueNoteBean[] result =
                doQueryProductIssueNotes(queryBean);

            return result;
        } catch (Exception e) {
            logger.error("do queryProductIssueNotes error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param queryBean
    
     * @throws Exception
     */
    protected abstract int doQueryProductIssueNoteCount(
        final com.ourteam.product.requirement.dao.ProductIssueNoteDAOQueryBean queryBean)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public int queryProductIssueNoteCount(
        final com.ourteam.product.requirement.dao.ProductIssueNoteDAOQueryBean queryBean)
        throws Exception {
        try {
            int result = doQueryProductIssueNoteCount(queryBean);

            return result;
        } catch (Exception e) {
            logger.error("do queryProductIssueNoteCount error", e);
            throw e;
        }
    }

    /**
     *
    
     * @param queryBean
    
     * @throws Exception
     */
    protected abstract java.util.Map<String, Object> doQueryProductIssuesStatistics(
        final com.ourteam.product.requirement.dao.ProductIssueDAOQueryBean queryBean)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public java.util.Map<String, Object> queryProductIssuesStatistics(
        final com.ourteam.product.requirement.dao.ProductIssueDAOQueryBean queryBean)
        throws Exception {
        try {
            java.util.Map<String, Object> result = doQueryProductIssuesStatistics(queryBean);

            return result;
        } catch (Exception e) {
            logger.error("do queryProductIssuesStatistics error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueChangeLog
    
     * @throws Exception
     */
    protected abstract void doAddNewProductIssueChangeLog(
        final com.ourteam.product.requirement.domain.ProductIssueChangeLogBean aProductIssueChangeLog)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void addNewProductIssueChangeLog(
        final com.ourteam.product.requirement.domain.ProductIssueChangeLogBean aProductIssueChangeLog)
        throws Exception {
        try {
            if (aProductIssueChangeLog == null) {
                throw new org.apache.commons.lang.NullArgumentException(
                    "The Parameter [aProductIssueChangeLog] Value is NULL");
            }

            doAddNewProductIssueChangeLog(aProductIssueChangeLog);
        } catch (Exception e) {
            logger.error("do addNewProductIssueChangeLog error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueChangeLog
    
     * @throws Exception
     */
    protected abstract void doModifyProductIssueChangeLog(
        final com.ourteam.product.requirement.domain.ProductIssueChangeLogBean aProductIssueChangeLog)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void modifyProductIssueChangeLog(
        final com.ourteam.product.requirement.domain.ProductIssueChangeLogBean aProductIssueChangeLog)
        throws Exception {
        try {
            if (aProductIssueChangeLog == null) {
                throw new org.apache.commons.lang.NullArgumentException(
                    "The Parameter [aProductIssueChangeLog] Value is NULL");
            }

            doModifyProductIssueChangeLog(aProductIssueChangeLog);
        } catch (Exception e) {
            logger.error("do modifyProductIssueChangeLog error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueChangeLogIds
    
     * @throws Exception
     */
    protected abstract void doDeleteProductIssueChangeLogs(
        final long[] aProductIssueChangeLogIds) throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public void deleteProductIssueChangeLogs(
        final long[] aProductIssueChangeLogIds) throws Exception {
        try {
            doDeleteProductIssueChangeLogs(aProductIssueChangeLogIds);
        } catch (Exception e) {
            logger.error("do deleteProductIssueChangeLogs error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param aProductIssueChangeLogId
    
     * @throws Exception
     */
    protected abstract com.ourteam.product.requirement.domain.ProductIssueChangeLogBean doGetProductIssueChangeLogById(
        final long aProductIssueChangeLogId) throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public com.ourteam.product.requirement.domain.ProductIssueChangeLogBean getProductIssueChangeLogById(
        final long aProductIssueChangeLogId) throws Exception {
        try {
            com.ourteam.product.requirement.domain.ProductIssueChangeLogBean result =
                doGetProductIssueChangeLogById(aProductIssueChangeLogId);

            return result;
        } catch (Exception e) {
            logger.error("do getProductIssueChangeLogById error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param queryBean
    
     * @throws Exception
     */
    protected abstract com.ourteam.product.requirement.domain.ProductIssueChangeLogBean[] doQueryProductIssueChangeLogs(
        final com.ourteam.product.requirement.dao.ProductIssueChangeLogDAOQueryBean queryBean)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public com.ourteam.product.requirement.domain.ProductIssueChangeLogBean[] queryProductIssueChangeLogs(
        final com.ourteam.product.requirement.dao.ProductIssueChangeLogDAOQueryBean queryBean)
        throws Exception {
        try {
            com.ourteam.product.requirement.domain.ProductIssueChangeLogBean[] result =
                doQueryProductIssueChangeLogs(queryBean);

            return result;
        } catch (Exception e) {
            logger.error("do queryProductIssueChangeLogs error", e);
            throw e;
        }
    }

    /**
     * $method.remarks
    
     * @param queryBean
    
     * @throws Exception
     */
    protected abstract int doQueryProductIssueChangeLogCount(
        final com.ourteam.product.requirement.dao.ProductIssueChangeLogDAOQueryBean queryBean)
        throws Exception;

    /**
     * $method.description
    
     * @throws Exception
     */
    public int queryProductIssueChangeLogCount(
        final com.ourteam.product.requirement.dao.ProductIssueChangeLogDAOQueryBean queryBean)
        throws Exception {
        try {
            int result = doQueryProductIssueChangeLogCount(queryBean);

            return result;
        } catch (Exception e) {
            logger.error("do queryProductIssueChangeLogCount error", e);
            throw e;
        }
    }
}
